/*
 *  String.prototype.length
 *  String.prototype.constructor 用于获取构造函数(即返回String函数)
 *  String.prototype.includes() 判断字符串是否包含指定子串
 *  String.prototype.indexOf() 判断字符串中指定子串首次出现的位置
 *  String.prototype.lastIndexOf() 判断字符串中指定子串最后出现的位置
 *  String.prototype.startsWith() 判断字符串是否以指定的子串为前缀
 *  String.prototype.endsWith() 判断字符串是否以指定的子串为后缀
 */

// String对象(类)本身的 length 属性用于获取其形参个数
console.log( 'String函数的形参个数: ' , String.length );

// 所有的String实例都有一个名称为length的自有属性，用于获取该字符串中的字符个数
let s = new String( '从前有座山，山上有个庙，庙里有个老和尚讲故事，讲什么故事呢，讲的是从前有座山...' );
// let s = '从前有座山，山上有个庙，庙里有个老和尚讲故事，讲什么故事呢，讲的是从前有座山...' ;
console.log( '判断length是否是String实例的自有属性:' , s.hasOwnProperty( 'length' ) ); // true
// 通过String实例的length属性可以获取字符串长度(即字符串中字符个数)
console.log( '字符串中的字符个数: ' , s.length );
console.log( 'String原型上的length属性: ' , s.__proto__.length );

console.log( '- - - - - - - - - - - - - - -' );

console.log( String.prototype.constructor === String ); // true
console.log( s.constructor === String ); // true

console.log( '- - - - - - - - - - - - - - -' );

console.log( s.includes('朱娅婷') );
console.log( s.includes('老和尚') );

// 在字符串中查找指定子串第一次出现的位置(统一使用下标表示)，若不存在则返回-1
console.log( s.indexOf( '朱娅婷' ) );
console.log( s.indexOf( '山' ) );
// 在字符串中查找指定子串最后一次出现的位置(统一使用下标表示)，若不存在则返回-1
console.log( s.lastIndexOf( '朱娅婷' ) );
console.log( s.lastIndexOf( '山' ) );

console.log( '- - - - - - - - - - - - - - -' );

// 判断字符串是否以指定的子串为前缀
console.log( s.startsWith( '我看见' ) );
console.log( s.startsWith( '从前有座山' ) );

console.log( '- - - - - - - - - - - - - - -' );

// 判断字符串是否以指定的子串为后缀
console.log( s.endsWith( '。' ) );
console.log( s.endsWith( '...' ) );

console.log( '- - - - - - - - - - - - - - -' );

let str = `welcome to xi'an. welcome to yunchuang. welcome to 5 ying.` ;

let key = '.' ;

// 寻找 key 首次出现的位置
let first = str.indexOf( key );
let after = first + 1 ;
// 从 first 之后开始寻找 key 首次出现的位置
let index1 = str.indexOf( key , after );
console.log( index1 );

// 寻找 key 最后出现的位置
let last = str.lastIndexOf( key );
let before = last - 1 ;
let index2 = str.lastIndexOf( key , before );
console.log( index2 );